﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Speedy
{
    public enum SyncEvrakTipi
    {
        SatisFaturasi,
        AlinanSiparis,
        Tahsilat,
        IadeFaturasi,
        Transfer
    }

    public enum TahsilatTipi : byte
    {
        Nakit = 0,
        Cek = 2,
        Senet = 4,
        KrediKarti = 1,
        Havale = 3
    }

    interface ISynchronizer
    {
        int[] SatisFaturasi_CariHar_EvrakTipi { get; }
        int[] SatisFaturasi_StokHar_EvrakTipi { get; }
        int[] SatisIrsaliyesi_StokHar_EvrakTipi { get; }
        int[] IadeFaturasi_CariHar_EvrakTipi { get; }
        int[] IadeFaturasi_StokHar_EvrakTipi { get; }
        int[] AlinanSiparisEvrakTipi { get; }
        int[] SatisIadeFaturasi_CariHar_EvrakTipi { get; }
        int[] SatisIadeFaturasi_StokHar_EvrakTipi { get; }
        int[] DepoSevkEvrakTipi { get; }
        int[] TahsilatEvrakTipi { get; }

        string SharEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, int odeme, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, string ref_rec, string ref_dbc, decimal fiyat, string belge_no, string firma_no, string sube_no, int adresNo, int tevkifatTipi);
        string DepoSevkEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, int odeme, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, string ref_rec, string ref_dbc, decimal fiyat, string belge_no, string firma_no, string sube_no, bool sonlandir);
        string NormalSipEkle(DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no);
        string AlinanSipEkle(DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no, int dovizCinsi, decimal dovizKur);
        string ProformaSipEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no);
        string SubeSipEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no);
        string CariHarKaydet(int tip, int cins, bool normal_iade, int evrak_tip, string seri, int sira, DateTime tarih, string belge_no, string carikod, decimal aratoplam, decimal meblag, decimal isk1, decimal isk2, decimal isk3, decimal isk4, decimal isk5, decimal isk6, decimal vergi1, decimal vergi2, decimal vergi3, decimal vergi4, decimal vergi5, decimal vergi6, string firma_no, string sube_no, int vade, string srmKod, string depoKod, string plasiyerKod, string kasaKodu, string aciklama, bool yazdirildi, Dictionary<string, decimal> tevkifatTutari);
        string TahsilatEkle(TahsilatTipi tahsilatTipi, DateTime tarih, string seri, int sira, int satir, string belgeNo, string cariKodu, string kasaHizKod, decimal meblag, string refNo, string srmMerkez, DateTime vade, string bankaAdi, string subeAdi, string hesapNo, string kesideYeri, string kartNo, string cekNo, string depoKod, string plasiyerKod);
        string TahsilatReferansNo(TahsilatTipi tip);
        string CariListeSql();
        string RouteListeSql();
        string RouteOlmayanCariler(int hafta);
        string EvrakListesi(bool tumu);
        string UrunPromosyonListesi();
        DataTable ListeLoadData(ListeTipleri tip, string filtre);
        string CariPromosyonListesi();
        string TemsilciBazindaRoute();
        Dictionary<int, int> KdvSira { get; }
        int MaxEvrakNo(SyncEvrakTipi tip, string seri);
        bool EvrakVarmi(string seri, int sira, SyncEvrakTipi tip);
        int CariVade(string carikod);
    }
}